/**
 * 作者：
 * 创建时间：2012-6-26 下午2:07:55
 */
package dragon.model.table;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import dragon.model.base.Model;
import dragon.model.base.ModelDescribe;

/**
 * 数据表定义
 */
public class Table extends Model {

	/**
	 * 表字段
	 */
	@ModelDescribe(annotation = "表字段")
	private List<Field> fields;

	/**
	 * 表字段，用于快速定位字段(xml文件中不输出此字段)<br>
	 * k:字段code,v:字段
	 */
	@ModelDescribe(annotation = "表字段，用于快速定位字段(xml文件中不输出此字段)<br>k:字段code,v:字段", runtime = true)
	private Map<String, Field> fieldsMap;

	@Override
	public String toString() {
		StringBuilder str = new StringBuilder();
		str.append(super.toString());
		str.append("dragon.model.table.Table:\n");
		if (fields != null) {
			for (Field field : fields) {
				str.append("field=").append(field).append("\n");
			}
		}
		return str.toString();
	}

	@Override
	public String toHtmlString() {
		return "<a href=\"javascript:void(0);\" onclick=\"viewMore('Table','" + getCode() + "');\">" + getName() + "</a>";
	}

	/**
	 * @return the fields
	 */
	public List<Field> getFields() {
		return fields;
	}

	/**
	 * @param fields
	 *            the fields to set
	 */
	public void setFields(List<Field> fields) {
		this.fields = fields;

		// 设置fieldsMap，为了方便定位Field
		if (fieldsMap == null) {
			fieldsMap = new HashMap<String, Field>();
		} else {
			fieldsMap.clear();
		}
		for (Field field : fields) {
			fieldsMap.put(field.getCode(), field);
		}
	}

	/**
	 * 获取指定的字段
	 * 
	 * @param code
	 *            字段code
	 */
	public Field getFieldByCode(String code) {
		return fieldsMap.get(code);
	}

}
